#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <syslog.h>
#include <string.h>

int main(void) {

  pid_t pid, sid;   /* Our process ID and Session ID */

  /* Fork off the parent process */
  pid = fork();
  if (pid < 0) {
    exit(EXIT_FAILURE);
  }

  /* If we got a good PID, then we can exit the parent process. */
  if (pid > 0) {
    exit(EXIT_SUCCESS);
  }

  /* Change the file mode mask */
  umask(0);

  /* Open any logs here */ 

      /* Create a new SID for the child process */
      sid = setsid();
    if (sid < 0) {
      exit(EXIT_FAILURE); /* Log the failure */
    }

    /* Change the current working directory */
    if ((chdir("/")) < 0) {
      exit(EXIT_FAILURE); /* Log the failure */
    }

    /* Close out the standard file descriptors */
    close(STDIN_FILENO);
    close(STDOUT_FILENO);
    close(STDERR_FILENO);

    /* Daemon-specific initialization goes here */

    /* The Big Loop */
    while (1) {
      /* Do some task here ... */
      sleep(30); /* wait 30 seconds */
   }

    exit(EXIT_SUCCESS);
}
